let id = this._getItemId(this._allItems[i]);
if (!id)
continue;
- this._grid.addItem(this._items[id].actor);
+ this._grid.addItem(this._items[id]);
}
this.emit('view-loaded');
if (!mostUsed[i].get_app_info().should_show())
continue;
let appIcon = new AppIcon(mostUsed[i]);
- this._grid.addItem(appIcon.actor, -1);
+ this._grid.addItem(appIcon, -1);
}
},
app.open_new_window(workspace);
},
- createResultActor: function (resultMeta, terms) {
+ createResultObject: function (resultMeta, terms) {
let app = resultMeta['id'];
- let icon = new AppIcon(app);
- return icon.actor;
+ return new AppIcon(app);
}
});
this.actor = new St.BoxLayout({ style_class: 'icon-grid',
vertical: true });
-
+ this._items = [];
// Pulled from CSS, but hardcode some defaults here
this._spacing = 0;
this._hItemSize = this._vItemSize = ICON_SIZE;
},
removeAll: function() {
+ this._items = [];
this._grid.destroy_all_children();
},
- addItem: function(actor, index) {
+ addItem: function(item, index) {
+ if (!item.icon || !item.icon instanceof BaseIcon) {
+ log('Only items with a BaseIcon icon property can be added to IconGrid');
+ return;
+ }
+
+ this._items.push(item);
if (index !== undefined)
- this._grid.insert_child_at_index(actor, index);
+ this._grid.insert_child_at_index(item.actor, index);
else
- this._grid.add_actor(actor);
+ this._grid.add_actor(item.actor);
},
getItemAtIndex: function(index) {
this.actor.style_class = 'grid-search-result';
- let content = provider.createResultActor(metaInfo, terms);
+ let content = provider.createResultObject(metaInfo, terms);
let dragSource = null;
if (content == null) {
- content = new St.Bin();
+ let actor = new St.Bin();
let icon = new IconGrid.BaseIcon(this.metaInfo['name'],
{ createIcon: this.metaInfo['createIcon'] });
- content.set_child(icon.actor);
- content.label_actor = icon.label;
+ actor.set_child(icon.actor);
+ actor.label_actor = icon.label;
dragSource = icon.icon;
+ content = { actor: actor, icon: icon };
} else {
if (content._delegate && content._delegate.getDragActorSource)
dragSource = content._delegate.getDragActorSource();
}
- this.actor.set_child(content);
- this.actor.label_actor = content.label_actor;
+ this.actor.set_child(content.actor);
+ this.actor.label_actor = content.actor.label_actor;
+ this.icon = content.icon;
let draggable = DND.makeDraggable(this.actor);
draggable.connect('drag-begin',
for (let i = 0; i < metas.length; i++) {
let display = new GridSearchResult(this.provider, metas[i], this._terms);
display.actor.connect('key-focus-in', Lang.bind(this, this._keyFocusIn));
- this._grid.addItem(display.actor);
+ this._grid.addItem(display);
}
},
this._dialog = new FortuneDialog(capitalize(fish), FISH_COMMAND);
},
- createResultActor: function (resultMeta, terms) {
- let icon = new WandaIconBin(resultMeta.id, resultMeta.name);
- return icon.actor;
+ createResultObject: function (resultMeta, terms) {
+ return new WandaIconBin(resultMeta.id, resultMeta.name);
}
});